20907
14600
이 질문의 답변은 커뮤니티의 노력입니다. 이 게시물을 개선하려면 기존 답변을 수정하세요. 현재 새로운 답변이나 상호 작용을 받아들이지 않습니다.
jQuery 또는 순수 JavaScript를 사용하여 한 페이지에서 다른 페이지로 사용자를 리디렉션하려면 어떻게해야합니까? 
1
2
다음
하나는 단순히 jQuery를 사용하여 리디렉션하지 않습니다.
jQuery는 필요하지 않으며 window.location.replace (...)는 HTTP 리디렉션을 가장 잘 시뮬레이션합니다.
window.location.replace (...)는 window.location.href를 사용하는 것보다 낫습니다. replace ()는 세션 기록에서 원래 페이지를 유지하지 않기 때문에 사용자가 끝이없는 백에 갇히지 않을 것입니다. 버튼 실패.
누군가가 링크를 클릭하는 것을 시뮬레이션하려면
location.href
HTTP 리디렉션을 시뮬레이션하려면 location.replace를 사용하십시오.
예를 들면 :
// HTTP 리디렉션과 유사한 동작
window.location.replace ( "http://stackoverflow.com");
// 링크를 클릭하는 것과 유사한 동작
window.location.href = "http://stackoverflow.com";
|
경고 :이 답변은 가능한 해결책으로 제공되었을뿐입니다. jQuery가 필요하기 때문에 분명히 최상의 솔루션은 아닙니다. 대신 순수한 JavaScript 솔루션을 선호하십시오.
$ (위치) .attr ( 'href', 'http://stackoverflow.com')
|
페이지를 리디렉션하는 표준 "바닐라"JavaScript 방식
window.location.href = 'newPage.html';
또는 더 간단하게 : (창이 글로벌이기 때문에)
location.href = 'newPage.html';
리디렉션 할 때 HTTP_REFERER가 손실되어 여기에있는 경우 계속 읽으십시오.
(그렇지 않으면이 마지막 부분을 무시하십시오)
다음 섹션은 HTTP_REFERER를 많은 보안 조치 중 하나로 사용하는 사용자를위한 것입니다 (훌륭한 보호 조치는 아니지만). Internet Explorer 8 이하를 사용하는 경우 모든 형태의 자바 스크립트 페이지 리디렉션 (location.href 등)을 사용할 때 이러한 변수가 손실됩니다.
아래에서는 HTTP_REFERER를 잃지 않도록 IE8 이하에 대한 대안을 구현할 것입니다. 그렇지 않으면 거의 항상 window.location.href를 사용할 수 있습니다.
HTTP_REFERER (URL 붙여 넣기, 세션 등)에 대한 테스트를 통해 요청이 합법적인지 여부를 확인할 수 있습니다.
(참고 : 주석에있는 droop의 링크에 명시된대로 이러한 참조자를 해결 / 스푸핑하는 방법도 있습니다.)
간단한 크로스 브라우저 테스트 솔루션 (Internet Explorer 9+ 및 기타 모든 브라우저의 경우 window.location.href로 대체)
사용법 : redirect ( 'anotherpage.aspx');
function redirect (url) {
var ua = navigator.userAgent.toLowerCase (),
isIE = ua.indexOf ( 'msie')! == -1,
버전 = parseInt (ua.substr (4, 2), 10);
// Internet Explorer 8 이하
if (isIE && 버전 <9) {
var link = document.createElement ( 'a');
link.href = URL;
document.body.appendChild (link);
link.click ();
}
// 다른 모든 브라우저는 표준 window.location.href를 사용할 수 있습니다 (Internet Explorer 8 이하와 마찬가지로 HTTP_REFERER를 잃지 않음).
else {
window.location.href = URL;
}
}
|
이를 수행하는 방법에는 여러 가지가 있습니다.
// window.location
window.location.replace ( 'http://www.example.com')
window.location.assign ( 'http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/ 경로'
// window.history
window.history.back ()
window.history.go (-1)
// window.navigate; 이전 버전의 Internet Explorer에만 해당
window.navigate ( 'top.jsp')
// 아마도 부에노 없음
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';
// jQuery
$ (위치) .attr ( 'href', 'http : //www.example.com')
$ (window) .attr ( 'location', 'http : //www.example.com')
$ (위치) .prop ( 'href', 'http://www.example.com')
|
이것은 모든 브라우저에서 작동합니다.
window.location.href = '귀하의 _URL';
|
당신이하려는 일에 대해 좀 더 설명한다면 도움이 될 것입니다. 페이징 된 데이터를 생성하려는 경우이를 수행하는 방법에 대한 몇 가지 옵션이 있습니다. 직접 연결하려는 각 페이지에 대해 별도의 링크를 생성 할 수 있습니다.
 1 
 2 
 3 
...
예제의 현재 페이지는 코드와 CSS에서 다르게 처리됩니다.
AJAX를 통해 페이징 된 데이터를 변경하려면 여기에서 jQuery가 들어옵니다. 다른 페이지에 해당하는 각 앵커 태그에 클릭 핸들러를 추가하면됩니다. 이 클릭 핸들러는 AJAX를 통해 다음 페이지를 가져 와서 새 데이터로 테이블을 업데이트하는 jQuery 코드를 호출합니다. 아래 예에서는 새 페이지 데이터를 반환하는 웹 서비스가 있다고 가정합니다.
$ (문서) .ready (function () {
$ ( 'a.pager-link'). click (function () {
var page = $ (this) .attr ( 'href'). split (/ \? /) [1];
$ .ajax ({
유형 : 'POST',
URL : '/ path-to-service',
데이터 : 페이지,
성공 : function (content) {
$ ( '# myTable'). html (content); // 교체
}
});
거짓 반환; // 링크 중지
});
});
|
또한 location.replace (URL)이 최선의 방법이라고 생각하지만 리디렉션에 대해 검색 엔진에 알리고 싶다면 (재 지정을보기 위해 JavaScript 코드를 분석하지 않음) rel = "canonical"메타를 추가해야합니다. 웹 사이트에 태그를 추가하세요.
HTML 새로 고침 메타 태그가있는 noscript 섹션을 추가하는 것도 좋은 해결책입니다. 이 JavaScript 리디렉션 도구를 사용하여리디렉션을 만듭니다. 또한 HTTP 리퍼러를 전달하기위한 Internet Explorer 지원이 있습니다.
지연없는 샘플 코드는 다음과 같습니다.